/**
 * 
 */

package com.gustozzi.distribucion.dao;

import java.sql.Date;
import java.util.List;

import com.gustozzi.distribucion.dao.util.DataAccessExceptions;
import com.gustozzi.domain.Despacho;
import com.gustozzi.domain.Devolucion;
import com.gustozzi.domain.GuiaRemision;
import com.gustozzi.domain.HojaRuta;
import com.gustozzi.domain.Pedido;
import com.gustozzi.domain.Reserva;
import com.gustozzi.domain.Usuario;

/**
 * @author FABRIZIO
 * 
 */
public interface DistribucionDAO
{
    public Usuario obtenerUsuario(String usuario, String password) throws DataAccessExceptions;

    public List<Despacho> obtenerListaDespacho(int codigo, int centroDistribucion, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;

    public String eliminarDespacho(int codigo) throws DataAccessExceptions;

    public String reprogramarPedido(int codigo) throws DataAccessExceptions;

    public List<Pedido> obtenerListaPedido(int codigo, int cliente, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;

    public String guardarDespacho(int codigoDespacho, int codigoCentro, Date fechaEntrega, int codigoResponsable, int[] listaPedidos, boolean indicadorRegistro) 
            throws DataAccessExceptions;

    public String devolverPedido(String codigo) throws DataAccessExceptions;

    public List<Reserva> obtenerListaReserva(int codigo, int centroDistribucion, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;

    public List<HojaRuta> obtenerListaHojasRuta(int codigo, int centroDistribucion, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;

    public List<GuiaRemision> obtenerListaGuiasRemision(int codigo, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;

    public String guardarReserva(int codigoReserva, int codigoCentro, int codigoEstado, int[] listaPedidos, boolean indicadorRegistro) throws DataAccessExceptions;
    
    public List<Pedido> obtenerListaPedidoXReserva(int codigoReserva)
            throws DataAccessExceptions;
    
    public List<Devolucion> obtenerListaDevoluciones(int codigo, int centroDistribucion, Date fechaDesde, Date fechaHasta)
            throws DataAccessExceptions;
    
    public String eliminarDevolucion(int codigo) throws DataAccessExceptions;
    
    public List<Pedido> obtenerListaPedidoXDevolucion(int codigo)
            throws DataAccessExceptions;
}
